﻿using Microsoft.Extensions.DependencyInjection;
using Vertex.Abstractions.EventStream;
using Vertex.Stream.Common;
using Vertex.Stream.InMemory.Consumer;

namespace Vertex.Stream.InMemory
{
    public static class Extensions
    {
        public static void AddInMemoryStream(
            this IServiceCollection serviceCollection)
        {
            // 负责创建流，指定流的名称
            serviceCollection.AddSingleton<IEventStreamFactory, EventStreamFactory>();

            // 流的具体处理器，消费者中会使用这个接口，处理流
            serviceCollection.AddSingleton<IStreamSubHandler, StreamSubHandler>();

            // 负责创建 消费流对象，分配不同的流 给不同的处理器
            serviceCollection.AddHostedService<ConsumerManager>();
        }
    }
}
